SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spBajaDePlazas]

@idplaza INT,
@fechabaja VARCHAR(10)

AS
SET NOCOUNT ON
DECLARE @error INT

BEGIN TRAN

IF @fechabaja = '-1' BEGIN
	RAISERROR('La Fecha de Baja no es válida.',16,1)
	SELECT @error = @@error
	GOTO ONERROR
END

IF @idPlaza <> -1 BEGIN
	--Da de Baja la plaza
	UPDATE tb_Plazas Set Baja = 'S', FechaBaja = @fechabaja WHERE idPlaza = @idplaza
	SELECT @Error = @@error
	IF @error <> 0 GOTO ONERROR
	
	begin tran
	-- Da de baja los servicios que tienen ss que contienen esa plaza
	update s set s.baja='S', s.fechabaja=@fechabaja 
	from tb_ServiciosAgentes s, tb_SubServiciosAgentes ss
	where ss.Plaza = @idPlaza and ss.fechabaja is null and idServicioAgente = ServicioAgente
	
	if @@error <> 0
		rollback tran

	-- Da de baja todos los subservicios abiertos que contienen idPlaza
	update tb_SubServiciosAgentes set baja = 'S', fechabaja = @fechabaja where Plaza = @idPlaza and fechabaja is null

	if @@error <> 0
		rollback tran
	else 	
		commit tran
	
END

/*
IMPORTANTE: Falta dar de baja todos los servicios relacionados
*/

ONERROR:
IF @error = 0 BEGIN
	COMMIT TRAN
END
ELSE BEGIN
	ROLLBACK TRAN
END
GO
